#ifndef PW_PBL_NAMEDPAIR_HPP
#define PW_PBL_NAMEDPAIR_HPP

#include "Meta/String.hpp"

namespace pw_pbl
{
	template <typename FT, Meta::Str FName, typename ST, Meta::Str SName>
	struct NamedPair : public std::pair<FT, ST>
	{
		using std::pair<FT, ST>::pair;

		template <Meta::Str Name>
		constexpr auto &get() noexcept requires(Name == FName || Name == SName)
		{
			if constexpr (Name == FName)
				return this->first;
			else
				return this->second;
		}

		template <Meta::Str Name>
		constexpr auto &get() const noexcept requires(Name == FName || Name == SName)
		{
			if constexpr (Name == FName)
				return this->first;
			else
				return this->second;
		}
	};
} // namespace pw_pbl
#endif // PW_PBL_NAMEDPAIR_HPP
